package com.huilian.iotbox.admin.wap.service;

import com.github.pagehelper.PageInfo;
import com.huilian.iotbox.data.common.ServerResponse;
import com.huilian.iotbox.data.dto.MerchantStoreDto;
import com.huilian.iotbox.data.po.MerchantStore;
import com.huilian.iotbox.data.vo.MerchantStoreVo;
import com.huilian.iotbox.data.vo.UserInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @author 谢洛涛
 * @date 2021/1/11 17:35
 */
public interface MerchantStoreService {

    List<MerchantStore> findAllMerchantStoreByMchId(MerchantStoreDto merchantStoreDto);

    Integer[] findAllMerchantStoreIdByUserId(UserInfo userInfo);

    List<MerchantStoreVo> findMerchantStoreIdByUserId(UserInfo userInfo);

    ServerResponse updateMerchantStore(MerchantStoreDto merchantStoreDto);

    MerchantStoreVo findMerchantStoreByUserIdByStoreId(MerchantStore merchantStore);

    PageInfo findMerchantStoreList(MerchantStoreDto merchantStoreDto);

    ServerResponse updateDefaultStatus(MerchantStoreDto merchantStoreDto);

    ServerResponse save(MerchantStoreDto merchantStoreDto) throws ExecutionException, InterruptedException;

    /**
     * 根据场地名称和当前登录用户的Id查找有没有重复的名称
     *
     * @return
     */
    Integer findByUserIdAndStoreName(MerchantStoreDto merchantStoreDto);

    /**
     * 查询默认的场地
     *
     * @param merchantStoreDto
     * @return
     */
    MerchantStoreVo findDefaultStore(MerchantStoreDto merchantStoreDto);

    List<MerchantStoreVo> findAllMerchantStoreByMerchantId(String merchantId);

    List<MerchantStoreVo> findNoPageList(MerchantStoreDto merchantStoreDto);

    /**
     * 修改noticeMessageContentId
     *
     * @return
     */
    Integer updateNmcId(MerchantStoreDto merchantStoreDto);

    /**
     * 修改noticeMessageTagId
     *
     * @param merchantStoreDto
     * @return
     */
    Integer updateNmtId(MerchantStoreDto merchantStoreDto);

    /**
     * 修改首页消息绑定
     *
     * @return
     */
    ServerResponse updateMessage(MerchantStoreDto merchantStoreDto);


    List<MerchantStoreVo> findAllMerchantStoreByListId(MerchantStoreDto merchantStoreDto);

    MerchantStore findOneMerchantStoreById(MerchantStoreDto merchantStoreDto);

    ServerResponse saveByApplet(MerchantStoreDto merchantStoreDto);

    MerchantStore findOneMerchantStoreByIdAndPermission(MerchantStoreDto merchantStoreDto);

    ServerResponse updateMeasuringUnit(MerchantStoreDto merchantStoreDto);


    ServerResponse updatePackageModel(@Param("merchantStoreDto") MerchantStoreDto merchantStoreDto);

    PageInfo findAreaLedgerProportionAndPage(MerchantStoreDto merchantStoreDto);

    ServerResponse updateAsDelById(MerchantStoreDto merchantStoreDto);

    List<MerchantStoreVo> findMerchantStoreIdByUserIdAndDeviceTypeId(MerchantStoreDto merchantStoreDto);

    ServerResponse findStoreShelves(MerchantStoreDto merchantStoreDto);

    ServerResponse receiptQrCode(MerchantStoreDto merchantStoreDto);

    List<MerchantStore> findAllInventoryByOutTradeNo(MerchantStoreDto merchantStoreDto);

    ServerResponse findStoreGateGateDeviceNo(MerchantStoreDto merchantStoreDto);
}
